home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 143 / Gekkan Dennou Club - 2000.4 Vol. 143 (Japan).7z / Gekkan Dennou Club - 2000.4 Vol. 143 (Japan).bin / docs / perl / keisyou.pl next >
Perl Script  |  2000-02-26  |  834b  |  58 lines

  1. #
  2. # 継承の例題
  3. #
  4.  
  5. package Foo;
  6.  
  7. # インスタンスの生成
  8. sub new {
  9.   my ($type, $a, $b) = @_;
  10.   my $obj = { 'a' => $a, 'b' => $b };
  11.   bless $obj, $type;
  12.   $obj;
  13. }
  14.  
  15. # アクセスメソッド
  16. sub get_a {
  17.   my $obj = shift;
  18.   $obj->{'a'};
  19. }
  20.  
  21. # アクセスメソッド
  22. sub get_b {
  23.   my $obj = shift;
  24.   return $obj->{'b'};
  25. }
  26.  
  27. package Bar;
  28.  
  29. @ISA = ('Foo');  # Foo を継承
  30.  
  31. # インスタンスの生成
  32. sub new {
  33.   my ($type, $a, $b, $c) = @_;
  34.   my $obj = $type->Foo::new( $a, $b );
  35.  
  36. #  SUPER は機能しない 
  37. #  my $obj = $type->SUPER::new( $a, $b );
  38.  
  39.   $obj->{'c'} = $c;
  40.   $obj;
  41. }
  42.  
  43. # アクセスメソッド
  44. sub get_c {
  45.   my $obj = shift;
  46.   return $obj->{'c'};
  47. }
  48.  
  49. # test
  50. package main;
  51.  
  52. $o1 = Foo->new( 1, 2 );
  53. $o2 = Bar->new( 10, 20, 30 );
  54.  
  55. print $o1->get_a(), "\n";
  56. print $o2->get_a(), "\n";
  57. print $o2->get_c(), "\n";
  58.